package com.android.basiclib.base;

import androidx.lifecycle.MutableLiveData;
import com.android.basiclib.entity.LoadAction;



/**
 * 网络请求层，
 * 主要注意点是刷新的状态赋值问题，静态页面数据获取就那么几种还好控制，主要是可以刷新可以加载更多，类似yyjobs首页
 * 在Activity中用变量标记刷新和加载，然后在observe中处理结束，
 * 关于列表LiveData数据长度变化的问题，需要传递变量过去，添加刷新的数据
 * 数据改变了在Actiity中刷新的时候，就需要和Adpter中的数据做比对，刷新固定位置的数据了
 */
public class BaseRepository implements IRepository, IBaseViewModelAction{

    public MutableLiveData<LoadAction> mLoadActionLiveData;

    private BaseRepository() {
        //禁止使用无参的构造,必须实现状态的LiveData
    }

    public BaseRepository(MutableLiveData<LoadAction> stateLiveData) {
        mLoadActionLiveData = stateLiveData;
    }

    // =======================  loading state begin ↓ =========================

    @Override
    public void loadStartLoading() {
        loadStartLoading(null);
    }

    @Override
    public void loadStartLoading(String message) {
        mLoadActionLiveData.postValue(new LoadAction(LoadAction.STATE_LOADING, message));
    }

    @Override
    public void loadSuccess() {
        mLoadActionLiveData.postValue(new LoadAction(LoadAction.STATE_SUCCESS));
    }

    @Override
    public void loadError(String message) {
        mLoadActionLiveData.postValue(new LoadAction(LoadAction.STATE_ERROR, message));
    }

    @Override
    public void loadNoData() {
        mLoadActionLiveData.postValue(new LoadAction(LoadAction.STATE_NO_DATA));
    }

    @Override
    public MutableLiveData<LoadAction> getActionLiveData() {
        return mLoadActionLiveData;
    }


    @Override
    public void cleanTask() {
    }

    @Override
    public void cleanLastTask() {
    }
}
